package com.xiaozhu.utils;

import com.xiaozhu.pojo.JwtProperties;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Date;
import java.util.Map;

/**
 * @author 朱慧军
 * @version 1.0
 */
public class JwtUtils {

    /**
     *
     * @param Secret
     * @param Ttl
     * @param claims
     * @return
     */
    public static String createToken(String Secret, Long Ttl , Map<String, Object> claims) {

        // 需要进行Hs256加密
        SignatureAlgorithm hs256 = SignatureAlgorithm.HS256;

        // 时间：当前时间加上过期时间
        long l = System.currentTimeMillis() + Ttl;
        Date date = new Date(l);

        String token = Jwts.builder()
                .setClaims(claims)
                .signWith(hs256, Secret)
                .setExpiration(date).compact();

        return token;

    }

    /**
     *
     * @param token
     * @param secret
     * @return
     */
    public static Claims parseToken(String token, String secret) {

        Claims body = Jwts.parser().setSigningKey(secret)
                .parseClaimsJws(token).getBody();

        return body;

    }

}
